#pragma once
#ifndef HC_MESSAGE
#define HC_MESSAGE

#include "stdafx.h"
#include "data.h"

#define MSG_NULL			0
#define MSG_GET_MSG			1
#define MSG_UPDATE			2
#define MSG_DRAW			3
#define MSG_TIMER			4
#define MSG_IS_QUEUE_EMPTY	5
#define MSG_QUEUE_EMPTY		6
#define MSG_QUEUE_NOT_EMPTY	7
#define MSG_EXIT			8
#define MSG_TIMER_WAIT		9
#define MSG_GET_COORDS		10
#define MSG_HERO_COORDS		11

#define MSG_INIT			12

class Message
{
public:
	Message();
	Message(const string& f, const string& t, int c = MSG_NULL, CData* d = NULL);
	Message(const Message& copy);
	Message& operator=(const Message& copy);
	~Message();
	void Set(const string& f, const string& t, int c = MSG_NULL, CData* d = NULL);
public:
	string From;
	string To;
	int MsgCode;
	CData* Data;
private:
	int* instCount;
};

#endif